package clasificador;

import datos.Dato;
import datos.MuestraClasificada;
import java.util.HashMap;
import java.util.Map;

public abstract class ClasificadorEntrenado<Clase> implements Clasificador<Clase> {

    /* Esto deberia ser final, pero Java no permite constructores final */
	public ClasificadorEntrenado(MuestraClasificada<Clase> datosEntrenamiento, Map<String,Object> parametros)
	{
            this.inicializarParametros(parametros);
            this.entrenar(datosEntrenamiento);
	}
        
    public ClasificadorEntrenado(MuestraClasificada<Clase> datosEntrenamiento)
    {
        this(datosEntrenamiento,new HashMap<String,Object>());
    }
	
	protected abstract void entrenar(MuestraClasificada<Clase> datosEntrenamiento);
    protected abstract void inicializarParametros(Map<String,Object> parametros);

    /* Esto es realmente necesario? */
	@Override
	public abstract Clase clasificar(Dato d);
}
